<?php
// +----------------------------------------------------------------------
// | Tplay [ WE ONLY DO WHAT IS NECESSARY ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017 http://tplay.pengyichen.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 听雨 < 389625819@qq.com >
// +----------------------------------------------------------------------

// 应用公共文件

/**
 * 根据附件表的id返回url地址
 * @param  [type] $id [description]
 * @return [type]     [description]
 */
function geturl($id)
{
	if ($id) {
		$geturl = \think\Db::name("attachment")->where(['id' => $id])->find();
		if($geturl['status'] == 1) {
			//审核通过
			return $geturl['filepath'];
		} elseif($geturl['status'] == 0) {
			//待审核
			return '/uploads/xitong/beiyong1.jpg';
		} else {
			//不通过
			return '/uploads/xitong/beiyong2.jpg';
		} 
    }
    return false;
}


/**
 * [SendMail 邮件发送]
 * @param [type] $address  [description]
 * @param [type] $title    [description]
 * @param [type] $message  [description]
 * @param [type] $from     [description]
 * @param [type] $fromname [description]
 * @param [type] $smtp     [description]
 * @param [type] $username [description]
 * @param [type] $password [description]
 */
function SendMail($address)
{
    vendor('phpmailer.PHPMailerAutoload');
    //vendor('PHPMailer.class#PHPMailer');
    $mail = new \PHPMailer();          
     // 设置PHPMailer使用SMTP服务器发送Email
    $mail->IsSMTP();                
    // 设置邮件的字符编码，若不指定，则为'UTF-8'
    $mail->CharSet='UTF-8';         
    // 添加收件人地址，可以多次使用来添加多个收件人
    $mail->AddAddress($address); 

    $data = \think\Db::name('emailconfig')->where('email','email')->find();
            $title = $data['title'];
            $message = $data['content'];
            $from = $data['from_email'];
            $fromname = $data['from_name'];
            $smtp = $data['smtp'];
            $username = $data['username'];
            $password = $data['password'];   
    // 设置邮件正文
    $mail->Body=$message;           
    // 设置邮件头的From字段。
    $mail->From=$from;  
    // 设置发件人名字
    $mail->FromName=$fromname;  
    // 设置邮件标题
    $mail->Subject=$title;          
    // 设置SMTP服务器。
    $mail->Host=$smtp;
    // 设置为"需要验证" ThinkPHP 的config方法读取配置文件
    $mail->SMTPAuth=true;
    //设置html发送格式
    $mail->isHTML(true);           
    // 设置用户名和密码。
    $mail->Username=$username;
    $mail->Password=$password; 
    // 发送邮件。
    return($mail->Send());
}


/**
 * 阿里大鱼短信发送
 * @param [type] $appkey    [description]
 * @param [type] $secretKey [description]
 * @param [type] $type      [description]
 * @param [type] $name      [description]
 * @param [type] $param     [description]
 * @param [type] $phone     [description]
 * @param [type] $code      [description]
 * @param [type] $data      [description]
 */
function SendSms($param,$phone)
{
    // 配置信息
    import('dayu.top.TopClient');
    import('dayu.top.TopLogger');
    import('dayu.top.request.AlibabaAliqinFcSmsNumSendRequest');
    import('dayu.top.ResultSet');
    import('dayu.top.RequestCheckUtil');

    //获取短信配置
    $data = \think\Db::name('smsconfig')->where('sms','sms')->find();
            $appkey = $data['appkey'];
            $secretkey = $data['secretkey'];
            $type = $data['type'];
            $name = $data['name'];
            $code = $data['code'];
    
    $c = new \TopClient();
    $c ->appkey = $appkey;
    $c ->secretKey = $secretkey;
    
    $req = new \AlibabaAliqinFcSmsNumSendRequest();
    //公共回传参数，在“消息返回”中会透传回该参数。非必须
    $req ->setExtend("");
    //短信类型，传入值请填写normal
    $req ->setSmsType($type);
    //短信签名，传入的短信签名必须是在阿里大于“管理中心-验证码/短信通知/推广短信-配置短信签名”中的可用签名。
    $req ->setSmsFreeSignName($name);
    //短信模板变量，传参规则{"key":"value"}，key的名字须和申请模板中的变量名一致，多个变量之间以逗号隔开。
    $req ->setSmsParam($param);
    //短信接收号码。支持单个或多个手机号码，传入号码为11位手机号码，不能加0或+86。群发短信需传入多个号码，以英文逗号分隔，一次调用最多传入200个号码。
    $req ->setRecNum($phone);
    //短信模板ID，传入的模板必须是在阿里大于“管理中心-短信模板管理”中的可用模板。
    $req ->setSmsTemplateCode($code);
    //发送
    

    $resp = $c ->execute($req);
}


/**
 * 替换手机号码中间四位数字
 * @param  [type] $str [description]
 * @return [type]      [description]
 */
function hide_phone($str){
    $resstr = substr_replace($str,'****',3,4);  
    return $resstr;  
}

/**
 * 生成操作按钮
 * @param array $operate 操作按钮数组
 */
function showOperate($operate = [])
{   

    if(empty($operate)){
        return '';
    }

    $option = '';
    foreach($operate as $key=>$vo){
        // if($vo['auth']){
            $option .= ' <a href="' . $vo['href'] . '"><button type="button" class="btn btn-' . $vo['btnStyle'] . ' btn-sm">'.
                '<i class="' . $vo['icon'] . '"></i> ' . $key . '</button></a>';
        // }
    }

    return $option;
}



function ajax($status = '1', $message = '', $data = '')
{
    return json(['status' => $status, 'message' => $message, 'data' => $data]);
}


/**
 * 过滤数组获取需要的数据
 * @param array       $data
 * @param array|str   $where
 * @return array
 */
function getNeedData($data,$where){
    if(empty($data) || empty($where) || !is_array($data)) return false;
    $array=[];
    if(!is_array($where)) $where[]= $where;

    //过滤数据
    foreach ($data as $key => $value) {
      if(in_array($key,$where)) $array[$key] = $value;
    }
    return $array;
}

/**
 * @param $Mobile
 * @return array
 * @auther mapengcheng
 */
function NewSms($Mobile, $type = 1)
{
    // return false;
    db('sms')->where('phone', $Mobile)->update(['status' => 2]);
    $str     = "1234567890123456789012345678901234567890";
    $str     = str_shuffle($str);
    $code    = substr($str, 3, 6);
    $data    = "username=%s&password=%s&mobile=%s&content=%s";
    $url     = "http://120.55.248.18/smsSend.do?";
    $name    = "JINLIAN";
    $pwd     = md5("cT5sG7wW");
    $pass    = md5($name . $pwd);
    $to      = $Mobile;
    //1:注册 2:忘记密码 3:提现验证码  4:修改登录密码 5:修改交易密码  6:修改手机号

    /*
您的注册验证码是***，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】
您本次操作的验证码是***，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】
您的提现验证码是***，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】
您的修改验证码是***，请在10分钟内填写，为保障您的账户安全，切勿将验证码泄露给他人！【时尚链】
    */
    switch ($type) {
        case 1:
            $content = "您的注册验证码是" . $code . "，如非本人操作，请忽略本短信【时尚链】";
            break;
        case 2:
            $content = "您的修改验证码是" . $code . "，如非本人操作，请忽略本短信【时尚链】";
            break;
        case 3:
            $content = "您的提现验证码是" . $code . "，如非本人操作，请忽略本短信【时尚链】";
            break;
        case 4:
            $content = "您的修改验证码是" . $code . "，如非本人操作，请忽略本短信【时尚链】";
            break;
        case 5:
            $content = "您的修改验证码是" . $code . "，如非本人操作，请忽略本短信【时尚链】";
            break;
        case 6:
            $content = "您的修改验证码是" . $code . "，如非本人操作，请忽略本短信【时尚链】";
            break;
        case 7:
            $content = "您本次操作的验证码是" . $code . "，如非本人操作，请忽略本短信【时尚链】";
            break;
        
        default:
            return false;
            break;
    }
    
    $content = urlencode($content);
    $rdata   = sprintf($data, $name, $pass, $to, $content);
    db('sms')->insert(['phone' => $to,'time'=>time(), 'code' => $code, 'type' => $type]);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $rdata);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    return ['code' => $code, 'data' => $result, 'msg' => ''];
}
# 生成用户唯一标识
function getuserid()
{
    do {
        $output  = '';
        $pattern = '1234567890abcdefghjkmnopqrstuvwyzABCDEFGHJKOMNOPQRSTUVWXYZ';
        for ($a = 0; $a < 6; $a++) {
            $output .= $pattern{mt_rand(0, 30)}; //生成php随机数
        }
        $userId = $output;
    } while (db('users')->where(['unique' => $userId])->count());

    return $userId;
}

// //用户名、邮箱、手机账号中间字符串以*隐藏
function hideStar($str) { //用户名、邮箱、手机账号中间字符串以*隐藏
    if($str==''){
        return '';
    }
    if (strpos($str, '@')) {
        $email_array = explode("@", $str);
        $prevfix = (strlen($email_array[0]) < 4) ? "" : substr($str, 0, 3); //邮箱前缀
        $count = 0;
        $str = preg_replace('/([\d\w+_-]{0,100})@/', '***@', $str, -1, $count);
        $rs = $prevfix . $str;
    } else {
        $pattern = '/(1[345678]{1}[0-9])[0-9]{4}([0-9]{4})/i';
        if (preg_match($pattern, $str)) {
            $rs = preg_replace($pattern, '$1****$2', $str); // substr_replace($name,'****',3,4);
        } else {
            $rs = substr($str, 0, 3) . "***" . substr($str, -1);
        }
    }
    return $rs;
}

function hideStarFour($str) { //用户名、邮箱、手机账号中间字符串以*隐藏
    if($str==''){
        return '';
    }
    if (strpos($str, '@')) {
        $email_array = explode("@", $str);
        $prevfix = (strlen($email_array[0]) < 4) ? "" : substr($str, 0, 3); //邮箱前缀
        $count = 0;
        $str = preg_replace('/([\d\w+_-]{0,100})@/', '***@', $str, -1, $count);
        $rs = $prevfix . $str;
    } else {
        $pattern = '/(1[345678]{1}[0-9])[0-9]{4}([0-9]{4})/i';
        if (preg_match($pattern, $str)) {
            $rs = preg_replace($pattern, '$1*******', $str); // substr_replace($name,'****',3,4);
        } else {
            $rs = substr($str, 0, 3) . "*******";
        }
    }
    return $rs;
}

//随机生成唯一订单号
function orderSn()
{
    $yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
    return (String) $yCode[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . time() . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 999));
}


/**
*根据某字段对多维数组进行排序
*@param $array  要排序的数组
*@param $field  要根据的数组下标
*@return void
*/
function sortArrByField(&$array, $field, $desc = false){
  $fieldArr = array();
  foreach ($array as $k => $v) {
    $fieldArr[$k] = $v[$field];
  }
  $sort = $desc == false ? SORT_ASC : SORT_DESC;
  array_multisort($fieldArr, $sort, $array);
}